﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Hospital.Models;

namespace Hospital.Controllers
{
    public class SpravkaController : Controller
    {
        private DataManager _dataManager;

        public SpravkaController(DataManager dataManager)
        {
            _dataManager = dataManager;
        }

        public ActionResult List()
        {
            ViewData["Title"] = "Список заболеваний";
            ViewData["Spr"] = _dataManager.spr.GetSpravki();
            return View();
        }

        public ActionResult Spravka(int id)
        {
            ViewData.Model = _dataManager.spr.GetSpravka(id);
            return View();
        }

        [Authorize(Roles = "Admin")]
        public ActionResult Delete(int id)
        {
            _dataManager.spr.DeleteSpravka(id);
            return RedirectToAction("List");
        }

        [Authorize(Roles = "Admin")]
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Edit(int id)
        {
            Spravka m = _dataManager.spr.GetSpravka(id);
            ViewData.Model = m;

            return View();                        
        }

        [Authorize(Roles = "Admin")]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, Spravka m)
        {
            if (m.Name == null) ModelState.AddModelError("Name", "Поле не может быть пустым");
            else
                if (m.Name.Length < 3) ModelState.AddModelError("Name", "Название болезни не может быть короче 3 символов");
            if (m.Symptom == null) ModelState.AddModelError("Simptom", "Поле не может быть пустым");
            else
                if (m.Symptom.Length < 10) ModelState.AddModelError("Simptom", "Описание симптомов не может быть таким коротким");
            if (m.Lechenie == null) ModelState.AddModelError("Lechenie", "Поле не может быть пустым");
            else
                if (m.Lechenie.Length < 10) ModelState.AddModelError("Lechenie", "Слишком короткое описание выписки");

            if (ModelState.IsValid)
            {
                m.Id_Bol = id;
                _dataManager.spr.UpdateSpravka(m);
                return RedirectToAction("List");
            }
            //SetEditList(m);
            return View();
        }

        [Authorize(Roles = "Admin")]
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Add()
        {
            return View();
        }

        [Authorize(Roles = "Admin")]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Add(string name, string symptom, string lechenie)
        {
            if (name == null) ModelState.AddModelError("Name", "Поле не может быть пустым");
            else
                if (name.Length < 3) ModelState.AddModelError("Name", "Название болезни не может быть короче 3 символов");
            if (symptom == null) ModelState.AddModelError("Simptom", "Поле не может быть пустым");
            else
                if (symptom.Length < 10) ModelState.AddModelError("Simptom", "Описание симптомов не может быть таким коротким");
            if (lechenie == null) ModelState.AddModelError("Lechenie", "Поле не может быть пустым");
            else
                if (lechenie.Length < 10) ModelState.AddModelError("Lechenie", "Слишком короткое описание выписки");

            if (ModelState.IsValid)
            {
                _dataManager.spr.AddSpravka(name, symptom, lechenie);
                return RedirectToAction("List");
            }
            return View();
        }

    }
}
